/*
基础数据类型
1. boolean
2. number
3. string
4. null和undefined
5. 数组
6. 元组(Tuple)
7. 枚举(enum)
8. any
9. void
10. object
*/
(function () {
    // 1. boolean
    var isDone = false;
    isDone = true;
    // isDone = 2  // error 不能将类型“number”分配给类型“boolean”
    // 2. number
    var a1 = 10;
    var a2 = 10; // 二进制
    var a3 = 10; // 八进制
    var a4 = 0xa; // 十六进制
    // 3. string
    var name = 'tom';
    var age = 12;
    var info = "\u6211\u53EB" + name + ", \u4ECA\u5E74" + age;
    // 4. null和undefined
    var n = null;
    var u = undefined;
    // n = 'abc' // error
    // u = 'abc'  // error
    // null和undefined是所有其它类型的子类型
    name = null;
    name = undefined;
    // 5. 数组
    var list1 = [1, 3];
    var list2 = ['abc', 'a', null];
    // list2.push(3)  // error
    // 6. 元组(Tuple): 元素个数和类型确定的数组
    var tArray = [null, null];
    tArray[0] = 'abc';
    tArray[1] = 3;
    // 7. 枚举(enum)
    var Color;
    (function (Color) {
        Color[Color["Red"] = 0] = "Red";
        Color[Color["Green"] = 4] = "Green";
        Color[Color["Blue"] = 5] = "Blue";
    })(Color || (Color = {}));
    console.log(Color);
    var myColor = Color.Green;
    console.log(myColor, Color.Blue, Color[2]);
    // 8. any
    var b = 3;
    b = 'abc';
    var arr = [1, 'abc', true, {}];
    // 9. void
    function fn() {
        // return 1 // error
        return undefined;
        // return null
    }
    // 10. object
    function fn2(x) {
        // return {}
        // return []
        // return () => {}
        // return 1 // error
        // return null
        return undefined;
    }
})();
